It is now well known to provide a computer image generation system, and associated processes, for generation of 3D image scenes upon a 2D display; each scene may contain many thousands (typically, over one million) of individual picture elements, called pixels, with each pixel having visual attributes unique to that corresponding small visible area in a 2D image space representation of the 3D object space then observable by a viewer situated with a certain orientation relative to the objects. The objects themselves are viewed from a known observation point, and may thus be represented by a set of planar surface polygons, which may be textured, by projection into texture space for convolution with the texture elements (texels) of selected texture patterns, prior to display. The various aspects of a CIG textured-polygon process may be had by reference to available texts and to previous Letters Patent, including U.S. Pat. No. 4,727,365 (Advanced Video Object Generator, issued Feb. 28, 1988) and U.S. Pat. No. 4,974,176 (Microtexture for Close-In Detail, issued Nov. 27, 1990), both of which patents are assigned to the assignee of the present application and are incorporated herein in their entireties by reference, along with all of the references cited therein.
It has been observed that most texture mapping approaches used in real time and with interactive graphic systems can not achieve a quality texture mapping for shallow viewing angles of textured objects (relative to the plane of the object polygon), i.e. where the object to be textured has a high aspect ratio (i.e., with a high angle of viewing incidence, generally greater than 45.degree., with respect to the polygon normal). An example of this is the "White Line Down the Center of the Road" problem: in the real world, the broken white road line is a series of white line segments each about 10 feet long and 5 inches wide with each white line segment separated by 10 feet of black pavement. Display of a 2D representation of a real 3D white road line would try to achieve two conflicting goals: first, to prevent the white line from disappearing as an observer looks down the road; and second, to prevent the resulting displayed white line from scintillating--here, scintillation is manifest as the appearance and disappearance of different sets (say, 50 feet lengths) of several white-line segments along the road. Another related example of these problems is the change in building features that are sharp when facing the viewer and either scintillate or take on a soft appearance when viewed at a high aspect ratio (shallow angle to the viewer). Most of these problems are caused by a failure to account for the display pixel (which usually has a rectangular, and often square, silhouette in image space) having an elongated footprint when mapped into texture space.
Texture maps are often organized into Level of Detail (LOD) sets. Typically, each coarser-level member of the set is a texture map that is a 2:1 reduction of the nextmost-finer set member above it; thus, a level D texture map will have 4 (or 2.times.2) texture elements (texels) for each texel in the texture map for the next-coarser level D+1. So, if the finest, first LOD (D=0) map has an array of 512-by-512 texels, the next-coarser LOD (D=1) is a texture map that is made up of an array of 256-by-256 (or 256.times.256) texels. This process is carried out, for this example, until LOD 9 yields a map with a single 1.times.1 texel.
In hitherto normal texture-to-pixel mapping, the effective LOD of each pixel is calculated for both of the width and length of that pixel as projected in texture space and the larger of the two effective LOD numbers is selected as that pixel's effective LOD. Next, two texture maps with LODs that bracket the effective LOD of the involved pixel are selected and an interpolation between two adjacent LOD texture maps is performed, using one of 3 interpolation strategies, is performed to calculate the value of the mapped pixel. The three interpolation methods are: nearest neighbor interpolation, bi-linear interpolation, or tri-linear interpolation.
Because the larger of width or length of the modified pixel, as projected in texture space, is used to determine the pixel's effective texture space LOD, the projected pixel effective size is forced to have the same texture space size in both its length and width directions. These texture methods are said to be isotropic because the LOD of the mapped pixel are always the same in both directions in texture space. However, when normally-rectangular (preferably, square) image space pixels are projected onto a object-space polygon which is skewed to some degree with respect to the view axis (itself normal to the image/display space plane), each projected or (texture-) mapped pixel becomes elongated because of the shallow projection angle; if such elongation (the ratio of the greater projected dimension to the lesser projected dimension) is beyond some selected limit (say, 3:1) the well known isotropic procedures, using the fiction that length equals width, can not be accommodated. This is the anisotropic case, where the projected pixel footprint dimensions, and therefore the associated LODs, can not be the same in both directions without causing undesired visual artifacts.
It is highly desirable to provide anisotropic texture methods that account for a projected pixel elongated shape in texture space. Several such methods (usually for non-real-time systems) have been implemented by approaches which fall into one of two broad categories: 1) Methods for convoluting the pixel texture-space-projection with the texture values, for producing very accurate, but computationally very expensive, results; and 2) Methods using the storage of pre-processed and pre-filtered textured maps, which require less computations but are also less flexible and precise, and more memory intensive.
Because of the increasing demand for more and more different textures maps to be available for real-time and interactive systems, the less memory intensive approaches are more desirable. In the past, other schemes for rendering anisotropic texture have been suggested (such as a procedure, used almost a decade ago by our predecessor simulation group, of sampling the texture along only the single greater diagonal of the anisotropic pixel) have hitherto been found to either provide insufficient resolution of the anisotropic texturing problems or be too costly (in terms of either necessary hardware or computational time).
Accordingly, provision of novel methods for mapping texture anisotropically to each display pixel required for each of a plurality of polygons forming each, preferably real-time, scene on a CIG display in a computational efficient manner, is highly desirable.